草庐IT

c++ - unordered_map 真的是无序的吗?

全部标签

c - 如何从 Go 函数返回 C 指针?

我有疑问是否可以从C上的Go函数指针返回?例如main.c可以是:structopen_db_returndb_ptr=open_db(db_path);GoSlicebacket={"DB",2,2};GoSlicekey={"CONFIG",6,6};structget_value_returnval=get_value(db_ptr.r0,backet,key);close_db(db_ptr.r0);接下来是Go代码://exportopen_dbfuncopen_db(pathstring)(interface{},error){db,err:=db.Open(path,06

json - 解码 map[string]interface{} 时出现 mgo 错误

我想在一个结构中存储一个任意的json对象:typeCstruct{Namestring`json:"name"bson:"name"`Configmap[string]interface{}`json:"config"bson:"config"`}当我存储任何深度嵌套的json对象时,这工作正常,但是当我检索它并且mgo尝试解码它时,我得到:Unmarshalcan'tdealwithstructvalues.Useapointer.我不确定指针应该是什么。如果我将其更改为:Config*map[string]interface{}错误发生在这里:https://github.com

不能用宏包装 cgo 标志

我编写了一个Go程序来模拟按键操作。为此,我必须使用cgo和不同的C代码片段,具体取决于正在编译Go代码的操作系统。我编写的代码如下所示:packagekeyboard/*#include#ifdef__WIN32#cgoCFLAGS:-nostdlib#includevoidSetKey(uint16_tkey,uint8_tvalue){INPUTip;ip.type=INPUT_KEYBOARD;ip.ki.wScan=0;ip.ki.time=0;ip.ki.dwExtraInfo=0;ip.ki.wVk=key;if(value){ip.ki.dwFlags=0;}else{

c - 如何在没有定义 main() 的情况下让 cgo 构建目标文件?

我有一个完全用C编写的项目。我只需要调用一个必须用GO编写的函数。因此,我使用cgo构建C文件,然后我想使用生成的目标文件与我的主C项目链接。假设我有一个文件foo.go和一个函数funcHelloWorld()。我希望从我的C代码中执行此函数。所以我做了以下步骤#gotoolcgofoo.go#cd_obj&&gcc-c*.o现在我有两个文件:#_cgo_export.o_cgo_main.o但是,main()以某种方式在那里定义,我无法将这些目标文件与我的主项目(多个主项目)链接。我如何让cgo不放入虚拟main?还是我这样做完全错了?编辑我需要入口点在C中。其他人发布的建议要求入

objective-c - cgo godefs 和 Objective-C

我通过CGoLang的包在GoLang上编写了一个包含Objective-C代码(调用一些OSXAPI)的程序,我需要从Go传递类型为T的变量代码到Objective-C代码,反之亦然。T是结构(或其他类型)。所以我需要在GoLang中创建兼容的(在内存布局方面)类型/变量,并通过unsafe.Pointer转换将其传递给Objective-C。对于通用C代码,我在这种情况下使用godefs,但我无法将godefs用于Objective-C。如果我尝试gotoolcgo-godefscgodefs.go//Thisis"cgodefs.go"filepackagetmp/*#cgoCF

go - 如何在 docopt 中构造无序参数?

我正在尝试构建接受一组选项的docopt用法。NavalFate.Usage:naval_fate.pyship[-b][-e]可运行示例:http://try.docopt.org/?doc=Naval+Fate.%0D%0A%0D%0AUsage%3A%0D%0A++naval_fate.py+ship%0D%0A++%5B-b+%3Cb_command%3E%5D%0D%0A++%5B-e+%3Ce_command%3E%5D&argv=ship+-e+c+如果我使用它,它工作正常:ship-bbarg-eearg输出是:{"-b":true,"-e":true,"":"barg

c - 将 cgo 与 typedef 变量一起使用

由于现有的库和速度,我正在创建一个项目,该项目使用我用C编写的密码学。尝试与Cgo交互时,我在使用C中创建的typedef时遇到了一些问题。下面是一个示例:typedefunsignedcharec_scalar[32];我能够成功创建ec_point变量,并使用接受ec_point*的函数。但是,每当我尝试使用通过普通ec_point传递的函数时,我都会收到错误消息:cannotusepk2(typeC.ec_scalar)astype*C.ucharinargumentto_Cfunc_secret_to_public我似乎找不到可以轻松转换它的方法。我也不想重构我的代码来接受ec

c - 将 C 翻译成 Golang。如何分配内存以匹配 C?

所以我正在翻译我在C中创建的程序。这个程序的目标是简单地从文件中读取矩阵,以稀疏行格式压缩矩阵,然后计算矩阵vector乘积。这是C语言的程序片段。//ReadtheMatrixMarketfileandinitializeaCSRformattedmatrix.csr_load_matrix(fileName,&compressedSparseMatrix);//Setthecorrectvaluestothestructandcreatethememoryallocation.double*x;double*y;x=malloc(compressedSparseMatrix.col

json - 使用反射在 Go 中创建 map

我只是在尝试用Golang编写一个像jsoncpp一样易于使用的JSON读取器包装器。是否可以在Golang中创建具有动态类型的map?例如:packagemainimport"reflect"funcmain(){i:=1//typeintmyType:=reflect.TypeOf(i)//typeTypea:=make(map[string]myType)//makeamapofTypea["KEY"]=i//Assignaninttothemap}我是在做梦吗?有些人会说“这就是为什么Go具有类型interface{}”,但是,我不想做这样的事情:myMap["key"].(m

golang 取消引用 map

这是一个示例代码,它创建了一个值为bool的字符串键映射。myMap:=make(map[string]bool)myMap["Jan"]=truemyMap["Feb"]=falsemyMap["Mar"]=true在这张map上做了一些操作后,我想删除它。我不想使用for循环遍历每个键并删除。如果我再次重新初始化myMap(如下所示),它会取消引用原始map并接受垃圾回收吗?myMap=make(map[string]bool) 最佳答案 GolangFAQ关于垃圾收集:EachvariableinGoexistsaslonga